"Un computer per tutti"
Progetto Ateneo 3a Missione
Obiettivi¶
- Donare PC
- Analisi Data Driven del fenomeno del Digitla Divide
- Workshop
Divario Digitale (Digital Divide)¶
Il divario digitale è il divario esistente tra chi ha accesso effettivo alle tecnologie dell'informazione (in particolare personal computer e Internet) e chi ne è escluso, in modo parziale o totale. I motivi di esclusione comprendono diverse variabili: condizioni economiche, livello d'istruzione, qualità delle infrastrutture, differenze di età o di sesso, appartenenza a diversi gruppi etnici, provenienza geografica[2]. Oltre a indicare il divario nell'accesso reale alle tecnologie, la definizione include anche disparità nell'acquisizione di risorse o capacità necessarie a partecipare alla società dell'informazione: nei paesi avanzati, e specie nella popolazione giovane, infatti, il divario di meno accesso alla rete è ormai quasi del tutto colmato e si apre invece un divario digitale di secondo livello basato sulle modalità di fruizione (Wikipedia)
Analisi Data Driven del fenomeno del Digitla Divide¶
- Focus nella scuola
- Approccio Iniziale: Questionario
- Intuizione: Accedere ai log del Resgistro Elettronico
Ipotesi¶
Se uno strumento digitale così importante viene usato poco ci può essere un problema di Digital Divide
Data as Excel files¶

Capire la struttura dei dati¶
- EE = Elementari
- MM = medie
- SS = Superiori
- ACso = il grado per esempio la prima media è MM 1, il quarto superiore è SS 4
- Alu = Alunni
- Tut = Tutori
- Maschio
- Femmina
- Italiani
- Stranieri
import pandas as pd
sheets = ['Dati_Sett 2022','Dati_Ott 2022','Dati_Nov 2022','Dati_Dic 2022','Dati_Gen 2023','Dati_Feb 2023','Dati_Mar 2023','Dati_Apr 2023','Dati_Mag 2023','Dati_Giu 2023']
dfs = []
for sheet in sheets:
dfs.append(pd.read_excel('Sapienza2.xlsx', sheet_name=sheet))
df_months_logs = pd.concat(dfs, ignore_index=True)
Esportare i dati in formato non proprietario¶
df_months_logs.to_csv("months_log.csv",index=False)
Da 0 a 3 stelle!¶

Analisi dei dati¶
import pandas as pd
df_all_from_csv = pd.read_csv("months_log.csv")
Dati sugli accessi¶
Quanti sono gli accessi mensili per tiplogia di utenti ?¶
months = [9,10,11,12,1,2,3,4,5,6]
accessi_totali_per_mese = []
accessi_totali_tutori_italiani_per_mese = []
accessi_totali_tutori_stranieri_per_mese = []
accessi_totali_alunni_italiani_per_mese = []
accessi_totali_alunni_stranieri_per_mese = []
for month in months:
mask = (df_all_from_csv['DataLogin'].dt.month == month)
accessi_totali_per_mese.append(df_all_from_csv.loc[mask]['Totale'].sum())
accessi_totali_tutori_italiani_per_mese.append(df_all_from_csv.loc[mask]['TutITA'].sum())
accessi_totali_tutori_stranieri_per_mese.append(df_all_from_csv.loc[mask]['TutSTRA'].sum())
accessi_totali_alunni_italiani_per_mese.append(df_all_from_csv.loc[mask]['AluITA'].sum())
accessi_totali_alunni_stranieri_per_mese.append(df_all_from_csv.loc[mask]['AluSTRA'].sum())
Accessi per regione¶
Gli uomini o le donne sono "genitori più partecipi"?¶
Gli uomini o le donne sono "studenti più partecipi"?¶
Dati sulle classi¶
df1 = pd.read_csv("class_data.csv")
# classi gestite dal nostro registro (si fa riferimento solo alla versione 2.0 utilizzato da circa la metà delle nostre scuole (circa 1000)
print("Totale alunni:",df1["Alunni"].sum())
print("Totale classi:",df1["Classi"].sum())
Totale alunni: 49169 Totale classi: 2724
Indice di Partecipazione¶
df_accessi_per_regione_alu=df_all_from_csv.groupby(['Regione'])[["AluTot"]].sum()
df_accessi_per_regione_alu
| AluTot | |
|---|---|
| Regione | |
| ABRUZZO | 1 |
| BASILICATA | 0 |
| CALABRIA | 66 |
| CAMPANIA | 1579 |
| ESTERO | 172 |
| FRIULI VENEZIA GIULIA | 42 |
| LAZIO | 1602 |
| LIGURIA | 3441 |
| LOMBARDIA | 9728 |
| MARCHE | 148 |
| PIEMONTE | 4 |
| PUGLIA | 245 |
| SARDEGNA | 6 |
| SICILIA | 471 |
| TOSCANA | 270 |
| UMBRIA | 50 |
| VENETO | 67 |
type(df2['Alunni'])
pandas.core.series.Series
df22 = df2['Alunni'].to_frame()
df22
| Alunni | |
|---|---|
| Regione | |
| BASILICATA | 447 |
| CALABRIA | 4380 |
| CAMPANIA | 3044 |
| ESTERO | 695 |
| FRIULI VENEZIA GIULIA | 1599 |
| LAZIO | 5552 |
| LIGURIA | 2378 |
| LOMBARDIA | 5468 |
| MARCHE | 4661 |
| MOLISE | 609 |
| PIEMONTE | 3042 |
| PUGLIA | 4880 |
| SARDEGNA | 1967 |
| SICILIA | 2991 |
| TOSCANA | 4530 |
| UMBRIA | 1356 |
| VENETO | 1570 |
df_div = df_accessi_per_regione_alu['AluTot'].div(df22['Alunni'])
type(df_div)
pandas.core.series.Series
df_div = df_div.to_frame()
df_div=df_div.rename(columns={0: "Index"})
df_div
| Index | |
|---|---|
| Regione | |
| ABRUZZO | NaN |
| BASILICATA | 0.000000 |
| CALABRIA | 0.015068 |
| CAMPANIA | 0.518725 |
| ESTERO | 0.247482 |
| FRIULI VENEZIA GIULIA | 0.026266 |
| LAZIO | 0.288545 |
| LIGURIA | 1.447014 |
| LOMBARDIA | 1.779078 |
| MARCHE | 0.031753 |
| MOLISE | NaN |
| PIEMONTE | 0.001315 |
| PUGLIA | 0.050205 |
| SARDEGNA | 0.003050 |
| SICILIA | 0.157472 |
| TOSCANA | 0.059603 |
| UMBRIA | 0.036873 |
| VENETO | 0.042675 |
import pandas as pd
pd.options.plotting.backend = "plotly"
# using Plotly Express directly
import plotly.express as px
fig2 = px.bar(df_div,title="Indice partecipazione = Accessi/Alunni")
fig2.show()
Altro¶
jupyter nbconvert notebook_name.ipynb --to slides --post serve
jupyter nbconvert analysis.ipynb --to slides --post serve --SlidesExporter.reveal_scroll=True
jupyter nbconvert analysis.ipynb --to slides --post serve --SlidesExporter.reveal_scroll=True --no-input
jupyter nbconvert analysis.ipynb --to slides --post serve --SlidesExporter.reveal_scroll=True --TagRemovePreprocessor.enabled=True --TagRemovePreprocessor.remove_input_tags hide-input
gk = df.groupby(['Ordine','ACso'])
gk.first()
| DataLogin | Regione | Totale | Maschi | Femmine | AluTot | AluMaschi | AluFemmine | AluITA | AluSTRA | TutTot | TutMaschi | TutFemmine | TutITA | TutSTRA | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ordine | ACso | |||||||||||||||
| AA | 1 | 2022-09-07 | CAMPANIA | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
| EE | 1 | 2022-09-01 | LAZIO | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
| 2 | 2022-09-04 | LIGURIA | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
| 3 | 2022-09-03 | TOSCANA | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 4 | 2022-09-01 | LAZIO | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
| 5 | 2022-09-01 | LAZIO | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | |
| MM | 1 | 2022-09-02 | CAMPANIA | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
| 2 | 2022-09-01 | LAZIO | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 2 | 2 | 0 | |
| 3 | 2022-09-01 | LAZIO | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | |
| SS | 1 | 2022-09-06 | LOMBARDIA | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
| 2 | 2022-09-01 | LOMBARDIA | 3 | 1 | 2 | 1 | 0 | 1 | 1 | 0 | 2 | 1 | 1 | 2 | 0 | |
| 3 | 2022-09-01 | LOMBARDIA | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 4 | 2022-09-01 | LOMBARDIA | 7 | 1 | 6 | 5 | 1 | 4 | 4 | 1 | 2 | 0 | 2 | 2 | 0 | |
| 5 | 2022-09-01 | LOMBARDIA | 11 | 7 | 4 | 7 | 4 | 3 | 7 | 0 | 4 | 3 | 1 | 4 | 0 |
import os
os.environ['APPDATA']= ""
import pandasgui
import matplotlib.pyplot as plt
import pandas as pd
from pandasgui import show
df = pd.DataFrame({'a':[1,2,3], 'b':[4,5,6], 'c':[7,8,9]})
show(df)
PandasGUI INFO — pandasgui.gui — Opening PandasGUI PandasGUI INFO — pandasgui.gui — Opening PandasGUI
<pandasgui.gui.PandasGui at 0x76b7d012d6c0>
